package com.rv.nats.annotation;

import java.lang.annotation.*;

/**
 *
 * 当发送消息时，参数前带有@Header则会将数据放入{@link io.nats.client.impl.Headers}中，
 * 若参数为Map时，则会将key和value分别放入，如果为其他类型时，key则为{@link Header#name()}
 * 注意: key的类型必须为String类型
 * <p>
 * {@code
 *   if (arg instanceof Map){
 *             Map<String , Object> map = (Map)arg;
 *             map.forEach((k,v)->{
 *                 headers.add(k , v.toString());
 *             });
 *         }else {
 *             Header header = parameter.getAnnotation(Header.class);
 *             headers.add(header.name() , arg.toString());
 *         }
 * }
 * </p>
 * @author SunDezhi
 * @time 2023/7/28
 **/

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PARAMETER)
@Documented
public @interface Header {

    String name() default "";

}
